package resty.tedu.case01;

import javax.swing.*;
import java.awt.*;
import java.util.Random;

/**
 * <p>
 *     当前类的实现是一个满天星的游戏.
 * <p>
 *     前置条件:
 * <ul>
 *     <li>面向对象的简单认识</li>
 *     <li>数组的简单认识</li>
 *     <li>线程的简单认识</li>
 *     <li>Color类的学习</li>
 *     <li>Font类的学习</li>
 *  </ul>
 *  <p>实现流程:</p>
 *  <pre>
 *     1.创建一个窗体类 
 *          1.1设置窗体大小
 *          1.2设置窗体位置
 *     2.创建一个画板类
 *          2.1创建一个数组并通过随机数赋值
 *          2.2画板中画星星
 *     3.将画板添加进窗体类里面
 *     
 *     后续线程实现见Demo1类
 *  </pre>   
 *     
 * 
 */

public class Demo {
    public void init(){
        JFrame jf = new JFrame();                   //实例化一个窗体  1
            jf.setSize(800,700);            //设置窗体的大小   1.1
            jf.setLocation(800,400);                //设置窗体的位置   1.2
        DemoPanel dp = new DemoPanel();             //创建一个窗体类    2
        jf.add(dp);                                 //窗体添加画板 3
        
        /**以上的代码执行都是在内存中实现的.并没有显示在屏幕当中.*/
        jf.setVisible(true);//设置可视化
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置点击关闭时退出虚拟机
        
    }

    public static void main(String[] args) {
       Demo demo = new Demo();//将当前代码放入内存中.
       demo.init();//调用init()方法
    }
}

/**
 * 创建一个画板类  2
 */
class DemoPanel extends  JPanel{
    Random ran ;//声明一个随机数
    int [] xs ;//声明一个X坐标的数组
    int [] ys ;//声明一个Y坐标的数组
    public DemoPanel(){
        ran = new Random();//实例化一个随机数
        xs = new int[300];
        ys = new int[300];
        /**让随机数生成在范围内的随机数值*/
        for (int i = 0; i < xs.length; i++) {
            xs[i] = ran.nextInt(800);
            ys[i] = ran.nextInt(700);
        }
    }
    
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        this.setBackground(Color.BLACK);
        g.setColor(Color.MAGENTA);//设置画笔颜色
        /**画出星星,坐标是构造器中已赋值的X坐标及Y坐标.*/
        for (int i = 0; i < xs.length; i++) {
            g.drawString("*",xs[i],ys[i]);
        }
        
    }
} 